package com.by.mapper;

import com.by.bean.Dept;
import com.by.bean.DeptTree;
import com.by.common.crud.BaseMapper;
import com.by.common.query.DeptQuery;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * @author Ye QS
 * @version 0.1
 * @className DeptMapper
 * @description
 * @date 2024/9/9 10:18
 * @since jdk11
 */
@Mapper
public interface DeptMapper extends BaseMapper<Dept> {
    /**
     * 根据父id查询最大编码
     *
     * @param parentId
     * @return
     */
    String queryMaxCode(int parentId);

    /**
     * 根据部门id查询编码
     *
     * @param id
     * @return
     */
    String queryCodeById(int id);

    /**
     * 查询指定部门下子部门的数量
     *
     * @param id
     * @return
     */
    int queryChildCount(Serializable id);

    /**
     * 修改状态
     *
     * @param id
     * @param status 0禁用 1 启用
     * @return
     */
    int updateStatus(@Param("id") int id, @Param("status") int status);

    /**
     * 根据条件查询子部门
     *
     * @param query
     * @return
     */
    List<Map> queryChiLdDept(DeptQuery query);

    /**
     * 查询部门树
     */
    List<DeptTree> queryTree(int parentId);

}
